/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.pucp.sigepa.recocidosimulado.domain.interfaz;

import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.Period;
import pe.edu.pucp.sigepa.recocidosimulado.Modelo.VueloSim;

/**
 *
 * @author carloslengua
 */
public class ProblemaSim {
    
    public static final Long PLAZO_CONTINENTAL = Long.valueOf(24);
    public static final Long PLAZO_INTERCONTINENTAL = Long.valueOf(48);
 
    private Date fechaPeticion;
    private Integer idAeropuertoOrigen;
    private Integer idAeropuertoDestino;
    private Integer nroPaquetes;

    public ProblemaSim() {
    }

    public ProblemaSim(Date fechaPeticion, Integer idAeropuertoOrigen, Integer idAeropuertoDestino, Integer nroPaquetes) {
        this.fechaPeticion = fechaPeticion;
        this.idAeropuertoOrigen = idAeropuertoOrigen;
        this.idAeropuertoDestino = idAeropuertoDestino;
        this.nroPaquetes = nroPaquetes;
    }

    public Date getFechaPeticion() {
        return fechaPeticion;
    }

    public void setFechaPeticion(Date fechaPeticion) {
        this.fechaPeticion = fechaPeticion;
    }

    public Integer getIdAeropuertoOrigen() {
        return idAeropuertoOrigen;
    }

    public void setIdAeropuertoOrigen(Integer idAeropuertoOrigen) {
        this.idAeropuertoOrigen = idAeropuertoOrigen;
    }

    public Integer getIdAeropuertoDestino() {
        return idAeropuertoDestino;
    }

    public void setIdAeropuertoDestino(Integer idAeropuertoDestino) {
        this.idAeropuertoDestino = idAeropuertoDestino;
    }

    public Integer getNroPaquetes() {
        return nroPaquetes;
    }

    public void setNroPaquetes(Integer nroPaquetes) {
        this.nroPaquetes = nroPaquetes;
    }
    
    //No incluye costo de tipos de aviones, modificar en BD               
    public Double calcularValor(SolucionSim solucionSim) {
    
        Double costo_parcial = Double.valueOf(0);
        Double costo_vuelo;
        
        for (VueloSim vueloSim : solucionSim ) {
        
            costo_vuelo = vueloSim.getCosto();
            
            costo_parcial += costo_vuelo;
        
        }
        
        return costo_parcial;
    
    }
     
    //Mejorar : tiempo de retencion en destino
    public Period calcularTiempo(SolucionSim solucionSim) {
    
        DateTime tiempoInicio = new DateTime(this.fechaPeticion);
        DateTime tiempoFin = new DateTime(solucionSim.get(solucionSim.size() - 1).getLlegadaest());

        return new Period(tiempoInicio, tiempoFin);
    
    }        
    
    @Override
    public String toString() {
        return "ProblemaSim: fp: " + fechaPeticion + " - ao = " + idAeropuertoOrigen + " - af = " + idAeropuertoDestino + " - nroPaquetes = " + nroPaquetes; 
    }
    
}
